<template>
  <nav>
    <ul class="pagination-sub">
    	<li class="page-data-total">共<span>{{total}}</span>条信息</li>
      	<li :class="{'disabled': current == 1}" class="first-page">
					<span class="page-btn-list"  @click="setCurrent(1)" > 首页 </span>
					</li>
      	<li :class="{'disabled': current == 1}" class="last-page">
					<span class="page-btn-list"  @click="setCurrent(current - 1)" >上一页 </span>
					</li>
      	<li v-for="(p,index) in grouplist" :class="{'active': current == p.val}" :key="index" class="now-page">
					<span class="page-btn-list"  @click="setCurrent(p.val)" > {{ p.text }} </span>
      	</li>
      	<li :class="{'disabled': current == page}" class="next-page">
					<span class="page-btn-list"  @click="setCurrent(current + 1)">下一页</span>
				</li>
      	<li :class="{'disabled': current == page}" class="finish-page">
					<span class="page-btn-list"  @click="setCurrent(page)"> 尾页 </span>
				</li>
      	<li class="input-page" style="height: auto;">
      		<input v-model="skipPageValue" type='number'  />页
      	</li>
      	<li class="skip-page" @click="skipPage">跳转</li>
    </ul>
  </nav>
</template>

<script type="es6">
export default {
  data() {
    return {
      current: this.currentPage,
      skipPageValue: "",
			
    };
  },
  props: {
    total: {
      // 数据总条数
      type: Number,
      default: 0
    },
    display: {
      // 每页显示条数
      type: Number,
      default: 10
    },
    currentPage: {
      // 当前页码
      type: Number,
      default: 1
    },
    pagegroup: {
      // 分页条数
      type: Number,
      default: 5,
      coerce: function(v) {
        v = v > 0 ? v : 5;
        return v % 2 === 1 ? v : v + 1;
      }
    },
		// 区分来源
		fromType:''
  },
  computed: {
    page: function() {
      // 总页数
      return Math.ceil(this.total / this.display);
    },
    grouplist: function() {
      // 获取分页页码
      var len = this.page,
        temp = [],
        list = [],
        count = Math.floor(this.pagegroup / 2),
        center = this.current;
      if (len <= this.pagegroup) {
        while (len--) {
          temp.push({ text: this.page - len, val: this.page - len });
        }
        return temp;
      }
      while (len--) {
        temp.push(this.page - len);
      }
      var idx = temp.indexOf(center);
      idx < count && (center = center + count - idx);
      this.current > this.page - count && (center = this.page - count);
      temp = temp.splice(center - count - 1, this.pagegroup);
      do {
        var t = temp.shift();
        list.push({
          text: t,
          val: t
        });
      } while (temp.length);
      if (this.page > this.pagegroup) {
        this.current > count + 1 &&
          list.unshift({ text: "...", val: list[0].val - 1 });
        this.current < this.page - count &&
          list.push({ text: "...", val: list[list.length - 1].val + 1 });
      }
      return list;
    }
  },
  methods: {
    setCurrent: function(idx) {
      if (this.current != idx && idx > 0 && idx < this.page + 1) {
        this.current = idx;
				console.log("fromType="+this.fromType)
				switch(this.fromType)
				{
					case 'pagechange':
						this.$emit("pagechange", this.current);
						break;
					case 'pageWarehouse':
						this.$emit("pageWarehouse", this.current);
						break;
					case 'pagecopyrightManage':
						this.$emit("pagecopyrightManage", this.current);
						break;
					case 'CertificateDetails':
						this.$emit("CertificateDetails", this.current);
						break;
					case 'pagecopyrightAgency':
					console.log("6666666")
						this.$emit("pagecopyrightAgency", this.current);
						break;
					case 'pageAppointmentList':
						this.$emit("pageAppointmentList", this.current);
						break;
					default:
					break
				}
				
        
      }
    },
    skipPage(){
      console.log("skipPageValue=" + this.skipPageValue);
				switch(this.fromType)
				{
					case 'pagechange':
						this.$emit("pagechange", this.skipPageValue);
						break;
					case 'pageWarehouse':
						this.$emit("pageWarehouse", this.skipPageValue);
						break;
					case 'pagecopyrightManage':
						this.$emit("pagecopyrightManage", this.skipPageValue);
						break;
					case 'CertificateDetails':
						this.$emit("CertificateDetails", this.skipPageValue);
						break;
					case 'pagecopyrightAgency':
						this.$emit("pagecopyrightAgency", this.skipPageValue);
						break;
					case 'pageAppointmentList':
						this.$emit("pageAppointmentList", this.skipPageValue);
						break;
					default:
					break
				}
    }
  }
};
</script>

<style scoped="scoped">
	@import '../../../assets/css/common.css'
</style>